package com.todo.biz.infrastructure.repository;


import com.todo.common.common.entity.response.page.PageResult;
import com.todo.biz.infrastructure.entity.condition.CollectSetCondition;
import com.todo.biz.infrastructure.entity.po.CollectSetPO;

import javax.validation.constraints.NotNull;
import java.util.List;

/**
 * (CollectSet)表服务接口
 *
 * @author zhangwenxiang
 * @since 2024-03-04 21:10:03
 */
public interface CollectSetRepository {

    /**
     * 多条件查询集合详情
     *
     * @param collectSetCondition
     * @return
     */
    PageResult<CollectSetPO> queryCollectSetByCondition(CollectSetCondition collectSetCondition);

    /**
     * 多条件查询集合总数
     *
     * @param collectSetCondition
     * @return
     */
    Long queryCountByCondition(CollectSetCondition collectSetCondition);

    /**
     * 根据主键id查询集合详情
     *
     * @param id
     * @return
     */
    CollectSetPO queryCollectSetPOById(Long id);

    /**
     * 新增集合详情
     *
     * @param collectSetPO
     * @return
     */
    Boolean insertCollectSetPO(CollectSetPO collectSetPO);

    /**
     * 根据主键id更新集合详情
     *
     * @param collectSetPO
     * @return
     */
    Boolean updateCollectSetPOById(CollectSetPO collectSetPO);

    /**
     * 根据主键id删除集合详情
     *
     * @param id
     * @return
     */
    Boolean removeCollectSetPOById(Long id);

    /**
     * 根据标题查询集合信息
     *
     * @param title
     * @return
     */
    CollectSetPO queryCollectSetByTitle(String title);

    /**
     * 根据城市信息和类型查询集合列表
     *
     * @param city
     * @param type
     * @return
     */
    List<CollectSetPO> queryCollectSetByCity(@NotNull String city, Integer type);

    /**
     * 根据标题信息和类型查询集合列表
     * @param title
     * @param type
     * @return
     */
    List<CollectSetPO> queryCollectSetByTitleAndType(@NotNull String title, Integer type);

    CollectSetPO queryCollectSetByCode(String code);

    Boolean enableCollectSetById(Long id, int status);
}
